class ShareMgr {

    public static share(options?: any) {
        options = options || {};
        options.message = options.message || "好友@我，不划水，笔画大师玩得就是脑子";
        options.picUrl = options.picUrl || "http://i.hudongcdn.com/8b4e1c52e5a1b88b42ae510d4a17187c2003_20180326.png";
        if(options && options.data){
            options.data = JSON.stringify(options.data);
        }
        BK.QQ.shareToArk(0, options.message, options.picUrl, true, options.data, function(errCode){
            if(errCode == 0){
                //TODO
                if(options && options.shareBack){
                    options.shareBack();
                }
            }
            if(options && options.callback){
                options.callback();
            }
        });
    }

    public static getOpenId(): string {
        return GameStatusInfo.openId;
    }

    //上传排行榜
    public static sendRankData(level: number) {
        var data = {
            userData: [
                {
                    openId: GameStatusInfo.openId,
                    startMs: "0",
                    endMs: ((new Date()).getTime()).toString(),
                    scoreInfo: {
                        score: level, //分数
                    },
                },
            ],
            // type 描述附加属性的用途
            // order 排序的方式，
            // 1: 从大到小，即每次上报的分数都会与本周期的最高得分比较，如果大于最高得分则覆盖，否则忽略
            // 2: 从小到大，即每次上报的分数都会与本周期的最低得分比较，如果低于最低得分则覆盖，否则忽略（比如酷跑类游戏的耗时，时间越短越好）
            // 3: 累积，即每次上报的积分都会累积到本周期已上报过的积分上
            // 4: 直接覆盖，每次上报的积分都会将本周期的得分覆盖，不管大小
            // 如score字段对应，上个属性.
            attr: {
                score: {
                    type: 'rank',
                    order: 1,
                }
            },
        };

        BK.QQ.uploadScoreWithoutRoom(1, data, function (errCode, cmd, data) {
            // 返回错误码信息
            if (errCode !== 0) {
                BK.Script.log(1, 1, '上传分数失败!错误码：' + errCode);
            }else{
                BK.Script.log(1, 1, '上传分数成功：' + errCode);
            }
            
        });
    }
    //获取排行榜数据
    public static getRankData(callback:(array: Array<any>)=>void){
        let arry: Array<any> = new Array();
        // 先拉 score 排行榜
        var attr = "score";//使用哪一种上报数据做排行，可传入score，a1，a2等
        var order = 1;     //排序的方法：[ 1: 从大到小(单局)，2: 从小到大(单局)，3: 由大到小(累积)]
        var rankType = 0; //要查询的排行榜类型，0: 好友排行榜，1: 群排行榜，2: 讨论组排行榜，3: C2C二人转 (手Q 7.6.0以上支持)
        BK.QQ.getRankListWithoutRoom(attr, order, rankType, function (errCode, cmd, data) {

            if (errCode !== 0) {
                BK.Script.log(1, 1, '获取排行榜数据失败!错误码：' + errCode);
                return;
            }
             BK.Script.log(1, 1, '获取排行榜数据 ：' + data.data.ranking_list);
            // 解析数据
            var mineRd;
            if (data) {
                for (var i = 0; i < data.data.ranking_list.length; ++i) {
                    var rd = data.data.ranking_list[i];
                    arry.push(rd);
                    BK.Script.log(1, 1, 'name  ：' + rd.nick);
                    if (rd.selfFlag) {
                         mineRd = {
                            url: rd.url,
                            nick: rd.nick,
                            score: rd.score, 
                            selfFlag: false,
                            rank:i+1
                        }
                    }
                }
                 arry.unshift(mineRd);
                callback(arry);
            }
        });
    }
}